#include<bits/stdc++.h>
using namespace std;
const int N=15;
int a[N];
int n;
string path;
bool check[N];
int ret=0;


void dfs()
{
    if(path.size()==n) 
    {
       ret++;
        return;
    }
    
    for(int i=1;i<=n;i++)
    {
        
        if(!check[i])
        {
            if(check[a[i]]) return;//直接向上返回即可
            check[i]=true;
            path.push_back(i);
            dfs();
            check[i]=false;
            path.pop_back();
        }
    }
    
    
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    dfs();
    cout<<ret<<endl;
    return 0;
}